import ustruct
import ujson

def BEGIN_CMD():
    return b'\xEE'

def END_CMD():
    return b'\xFF\xFC\xFF\xFF'

def TX_8(value):
    if isinstance(value,str):   # 如果参数是字符串，那么转为16进制数据
        value = int(value,16)
    else:
         value = int(value)     # 如果是非字符串（16进制数据），那么直接打包二进制数据
    return ustruct.pack('B', value)   # 参数为十进制数据

def TX_16(value):
    value = int(value)
    return ustruct.pack('>H', value)

def TX_32(value):
    value = int(value)
    return ustruct.pack('>I', value)

# 将字符串转换为字节串并添加到命令中
def SendStrings(str): 
    return str.encode('utf-8')

def dict_to_bytes_json(d: dict) -> bytes:
    # 将字典转为紧凑的 JSON，再编码为 UTF-8 字节串
    value = ujson.dumps(d)
    # json.dumps(d, ensure_ascii=False, separators=(',', ':'))  这里不能传入多个参数
    return value.encode('utf-8')






